package com.huidian.gitbatchprocessing.ui.service;

import com.huidian.gitbatchprocessing.ui.service.dto.BaseBranchDto;
import org.eclipse.jgit.lib.Repository;

/**
 * 分支操作的实现接口
 *
 * @author zxb
 */
public abstract class AbstractBranchOperate {

    /**
     * 获取操作的 key，见：{@link com.huidian.gitbatchprocessing.ui.enums.BranchOperateEnum}
     *
     * @return
     */
    public abstract Byte getKey();

    /**
     * 执行操作
     *
     * @param baseBranchDto git 操作需要的数据
     * @param repository    需要 git 操作的项目仓库
     * @return 执行参数的日信息
     * @throws Exception 执行抛出的异常
     */
    public abstract String execute(BaseBranchDto baseBranchDto, Repository repository) throws Exception;

    /**
     * 执行操作，捕获异常
     *
     * @param baseBranchDto git 操作需要的数据
     * @param repository    需要 git 操作的项目仓库
     * @return 执行信息
     */
    public String executeWithNoException(BaseBranchDto baseBranchDto, Repository repository) {
        try {
            return execute(baseBranchDto, repository);
        } catch (Exception e) {
            return e.getMessage();
        }
    }
}
